/*
 * Copyright (c) 2013-2014, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
 * only version 2 as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 */

&soc {

	led_flash0: qcom,camera-led-flash {
		cell-index = <0>;
		compatible = "qcom,camera-led-flash";
		qcom,flash-type = <1>;
		qcom,flash-source = <&pm8226_flash0>;
		qcom,torch-source = <&pm8226_torch>;
	};
};

&cci {

	actuator0: qcom,actuator@6e {
		cell-index = <5>;
		reg = <0x18>;
		compatible = "qcom,actuator";
		qcom,cci-master = <0>;
	};

	eeprom2: qcom,eeprom@6b{
		cell-index = <2>;
		reg = <0x6b>;
		qcom,eeprom-name = "ofilm_oty5f03";
		compatible = "qcom,eeprom";
		qcom,slave-addr = <0x6c>;
		qcom,cci-master = <0>;
		qcom,num-blocks = <7>;

		qcom,page0 = <1 0x0100 2 0x01 1 1>;
		qcom,poll0 = <0 0x0 2 0 1 1>;
		qcom,mem0 = <0 0x0 2 0 1 0>;
		qcom,page1 = <1 0x3d84 2 0xc0 1 1>;
		qcom,poll1 = <0 0x0 2 0 1 1>;
		qcom,mem1 = <0 0x0 2 0 1 0>;
		qcom,page2 = <1 0x3d85 2 0x00 1 1>;
		qcom,poll2 = <0 0x0 2 0 1 1>;
		qcom,mem2 = <0 0x0 2 0 1 0>;
		qcom,page3 = <1 0x3d86 2 0x0f 1 1>;
		qcom,pageen3 = <1 0x3d81 2 0x01 1 10>;
		qcom,poll3 = <0 0x0 2 0 1 1>;
		qcom,mem3 = <16 0x3d00 2 0 1 0>;
		qcom,page4 = <1 0x3d84 2 0xc0 1 1>;
		qcom,poll4 = <0 0x0 2 0 1 1>;
		qcom,mem4 = <0 0x0 2 0 1 0>;
		qcom,page5 = <1 0x3d85 2 0x10 1 1>;
		qcom,poll5 = <0 0x0 2 0 1 1>;
		qcom,mem5 = <0 0x0 2 0 1 0>;
		qcom,page6 = <1 0x3d86 2 0x1f 1 1>;
		qcom,pageen6 = <1 0x3d81 2 0x01 1 10>;
		qcom,poll6 = <0 0x0 2 0 1 1>;
		qcom,mem6 = <16 0x3d00 2 0 1 0>;

		cam_vio-supply = <&pm8226_lvs1>;
		cam_vana-supply = <&pm8226_l19>;
		qcom,cam-vreg-name = "cam_vio", "cam_vana";
		qcom,cam-vreg-type = <1 0>;
		qcom,cam-vreg-min-voltage = <0 2850000>;
		qcom,cam-vreg-max-voltage = <0 2850000>;
		qcom,cam-vreg-op-mode = <0 80000>;
		qcom,gpio-no-mux = <0>;
		gpios = <&msmgpio 26 0>,
		        <&msmgpio 28 0>,
		        <&msmgpio 35 0>,
		        <&msmgpio 21 0>;
		qcom,gpio-reset = <1>;
		qcom,gpio-standby = <2>;
		qcom,gpio-vdig = <3>;
		qcom,gpio-req-tbl-num = <0 1 2 3>;
		qcom,gpio-req-tbl-flags = <1 0 0 0>;
		qcom,gpio-req-tbl-label = "CAMIF_MCLK",
		        "CAM_RESET",
		        "CAM_STANDBY",
		        "CAM_VDIG";
		qcom,cam-power-seq-type = "sensor_vreg",
		        "sensor_vreg", "sensor_gpio",
		        "sensor_gpio", "sensor_gpio" , "sensor_clk";
		qcom,cam-power-seq-val = "cam_vio", "cam_vana","sensor_gpio_vdig",
		         "sensor_gpio_reset",
		        "sensor_gpio_standby","sensor_cam_mclk" ;
		qcom,cam-power-seq-cfg-val = <1 1 1 1 1 24000000>;
		qcom,cam-power-seq-delay = <1 1 10 10 10 5>;
	};

	eeprom3: qcom,eeprom@6c {
		cell-index = <3>;
		reg = <0x6c>;
		qcom,eeprom-name = "sunny_q8v18a";
		compatible = "qcom,eeprom";
		qcom,slave-addr = <0x20>;
		qcom,cci-master = <0>;
		qcom,num-blocks = <4>;
		qcom,page0 = <1 0x0100 2 0x01 1 1>;
		qcom,poll0 = <0 0x0 2 0 1 1>;
		qcom,mem0 = <0 0x0 2 0 1 0>;
		qcom,page1 = <1 0x3d84 2 0xc0 1 1>;
		qcom,poll1 = <0 0x0 2 0 1 1>;
		qcom,mem1 = <0 0x3d00 2 0 1 0>;
		qcom,page2 = <1 0x3d88 2 0x7010 2 1>;
		qcom,poll2 = <0 0x0 2 0 1 1>;
		qcom,mem2 = <0 0x3d00 2 0 1 0>;
		qcom,page3 = <1 0x3d8A 2 0x70F4 2 1>;
		qcom,pageen3 = <1 0x3d81 2 0x01 1 10>;
		qcom,poll3 = <0 0x0 2 0 1 1>;
		qcom,mem3 = <228 0x7010 2 0 1 1>;

		cam_vdig-supply = <&pm8226_l5>;
		cam_vana-supply = <&pm8226_l19>;
		cam_vio-supply = <&pm8226_lvs1>;
		qcom,cam-vreg-name = "cam_vdig","cam_vana", "cam_vio";
		qcom,cam-vreg-type = <0 1 2>;
		qcom,cam-vreg-min-voltage = <1200000 2850000 0>;
		qcom,cam-vreg-max-voltage = <1200000 2850000 0>;
		qcom,cam-vreg-op-mode = <200000 80000 0>;
		qcom,gpio-no-mux = <0>;
		gpios = <&msmgpio 26 0>,
		        <&msmgpio 37 0>,
		        <&msmgpio 36 0>;
		qcom,gpio-reset = <1>;
		qcom,gpio-standby = <2>;
		qcom,gpio-req-tbl-num = <0 1 2>;
		qcom,gpio-req-tbl-flags = <1 0 0>;
		qcom,gpio-req-tbl-label = "CAMIF_MCLK",
		        "CAM_RESET1",
		        "CAM_STANDBY";
		qcom,cam-power-seq-type = "sensor_vreg","sensor_vreg",
		        "sensor_vreg", "sensor_clk",
		        "sensor_gpio", "sensor_gpio";
		qcom,cam-power-seq-val = "cam_vdig","cam_vana",
		        "cam_vio", "sensor_cam_mclk",
		        "sensor_gpio_reset",
		        "sensor_gpio_standby";
		qcom,cam-power-seq-cfg-val = <1 1 1 24000000 1 1>;
		qcom,cam-power-seq-delay = <1 1 1 5 5 10>;
	};

	qcom,camera@20 {
		compatible = "ovti,ov8865";
		reg = <0x20>;
		qcom,slave-id = <0x20 0x300b 0x8865>;
		qcom,csiphy-sd-index = <0>;
		qcom,csid-sd-index = <0>;
		qcom,actuator-src = <&actuator0>;
		qcom,led-flash-src = <&led_flash0>;
		qcom,eeprom-src = <&eeprom3>;
		qcom,mount-angle = <90>;
		qcom,sensor-name = "ov8865_q8v18a";
		cam_vdig-supply = <&pm8226_l5>;
		cam_vana-supply = <&pm8226_l19>;
		cam_vio-supply = <&pm8226_lvs1>;
		cam_vaf-supply = <&pm8226_l15>;
		qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana",
		                                         "cam_vaf";
		qcom,cam-vreg-type = <0 1 0 0>;
		qcom,cam-vreg-min-voltage = <1200000 0 2850000 2800000>;
		qcom,cam-vreg-max-voltage = <1200000 0 2850000 2800000>;
		qcom,cam-vreg-op-mode = <200000 0 80000 100000>;
		qcom,gpio-no-mux = <0>;
		gpios = <&msmgpio 26 0>,
		        <&msmgpio 37 0>,
		        <&msmgpio 36 0>,
		        <&msmgpio 15 0>;
		qcom,gpio-reset = <1>;
		qcom,gpio-standby = <2>;
		qcom,gpio-af-pwdm = <3>;
		qcom,gpio-req-tbl-num = <0 1 2 3>;
		qcom,gpio-req-tbl-flags = <1 0 0 0>;
		qcom,gpio-req-tbl-label = "CAMIF_MCLK",
		        "CAM_RESET1",
		        "CAM_STANDBY",
		        "CAM_AF_PWDM";
		qcom,csi-lane-assign = <0x4320>;
		qcom,csi-lane-mask = <0x1F>;
		qcom,sensor-position = <0>;
		qcom,sensor-mode = <1>;
		qcom,cci-master = <0>;
	};

	qcom,camera@6a {
		compatible = "ovti,ov5648";
		reg = <0x6a>;
		qcom,slave-id = <0x6c 0x300a 0x5648>;
		qcom,csiphy-sd-index = <1>;
		qcom,csid-sd-index = <1>;
		qcom,eeprom-src = <&eeprom2>;
		qcom,mount-angle = <270>;
		qcom,sensor-name = "ov5648_oty5f03";
		cam_vana-supply = <&pm8226_l19>;
		cam_vio-supply = <&pm8226_lvs1>;
		qcom,cam-vreg-name = "cam_vio", "cam_vana";
		qcom,cam-vreg-type = <1 0>;
		qcom,cam-vreg-min-voltage = <0 2850000>;
		qcom,cam-vreg-max-voltage = <0 2850000>;
		qcom,cam-vreg-op-mode = <0 80000>;
		qcom,gpio-no-mux = <0>;
		gpios = <&msmgpio 26 0>,
				<&msmgpio 28 0>,
				<&msmgpio 35 0>,
				<&msmgpio 23 0>;
		qcom,gpio-reset = <1>;
		qcom,gpio-standby = <2>;
		qcom,gpio-vdig = <3>;
		qcom,gpio-req-tbl-num = <0 1 2 3>;
		qcom,gpio-req-tbl-flags = <1 0 0 0>;
		qcom,gpio-req-tbl-label = "CAMIF_MCLK",
				"CAM_RESET",
				"CAM_STANDBY",
				"CAM_VDIG";
		qcom,gpio-set-tbl-num = <1 1>;
		qcom,gpio-set-tbl-flags = <0 2>;
		qcom,gpio-set-tbl-delay = <1000 4000>;
		qcom,csi-lane-assign = <0x4320>;
		qcom,csi-lane-mask = <0x3>;
		qcom,sensor-position = <1>;
		qcom,sensor-mode = <1>;
		qcom,cci-master = <0>;
		status = "ok";
	};

	qcom,camera@0 {
		cell-index = <0>;
		compatible = "qcom,camera";
		reg = <0x00>;
		qcom,csiphy-sd-index = <0>;
		qcom,csid-sd-index = <0>;
		qcom,actuator-src = <&actuator0>;
		qcom,led-flash-src = <&led_flash0>;
		qcom,mount-angle = <90>;
		cam_vdig-supply = <&pm8226_l5>;
		cam_vana-supply = <&pm8226_l19>;
		cam_vio-supply = <&pm8226_lvs1>;
		cam_vaf-supply = <&pm8226_l15>;
		qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana",
		                                         "cam_vaf";
		qcom,cam-vreg-type = <0 1 0 0>;
		qcom,cam-vreg-min-voltage = <1200000 0 2850000 2800000>;
		qcom,cam-vreg-max-voltage = <1200000 0 2850000 2800000>;
		qcom,cam-vreg-op-mode = <200000 0 80000 100000>;
		qcom,gpio-no-mux = <0>;
		gpios = <&msmgpio 26 0>,
		        <&msmgpio 37 0>,
		        <&msmgpio 36 0>,
		        <&msmgpio 15 0>;
		qcom,gpio-reset = <1>;
		qcom,gpio-standby = <2>;
		qcom,gpio-af-pwdm = <3>;
		qcom,gpio-req-tbl-num = <0 1 2 3>;
		qcom,gpio-req-tbl-flags = <1 0 0 0>;
		qcom,gpio-req-tbl-label = "CAMIF_MCLK",
		        "CAM_RESET1",
		        "CAM_STANDBY",
		        "CAM_AF_PWDM";
		qcom,sensor-position = <0>;
		qcom,sensor-mode = <0>;
		qcom,cci-master = <0>;
		status = "ok";
	};

	qcom,camera@1 {
		cell-index = <1>;
		compatible = "qcom,camera";
		reg = <0x01>;
		qcom,csiphy-sd-index = <1>;
		qcom,csid-sd-index = <1>;
		qcom,mount-angle = <270>;
		cam_vdig-supply = <&pm8226_l5>;
		cam_vana-supply = <&pm8226_l19>;
		cam_vio-supply = <&pm8226_lvs1>;
		qcom,cam-vreg-name = "cam_vdig", "cam_vio", "cam_vana";
		qcom,cam-vreg-type = <0 1 0>;
		qcom,cam-vreg-min-voltage = <1200000 0 2850000>;
		qcom,cam-vreg-max-voltage = <1200000 0 2850000>;
		qcom,cam-vreg-op-mode = <200000 0 80000>;
		qcom,gpio-no-mux = <0>;
		gpios = <&msmgpio 26 0>,
				<&msmgpio 28 0>,
				<&msmgpio 35 0>,
				<&msmgpio 23 0>;
		qcom,gpio-reset = <1>;
		qcom,gpio-standby = <2>;
		qcom,gpio-vdig = <3>;
		qcom,gpio-req-tbl-num = <0 1 2 3>;
		qcom,gpio-req-tbl-flags = <1 0 0 0>;
		qcom,gpio-req-tbl-label = "CAMIF_MCLK",
				"CAM_RESET",
				"CAM_STANDBY",
				"CAM_VDIG";
		qcom,sensor-position = <1>;
		qcom,sensor-mode = <0>;
		qcom,cci-master = <0>;
		status = "ok";
	};
};
